Spring Security দিয়ে প্রথম প্রজেক্ট তৈরি করা একটি সহজ এবং কার্যকর উপায় Spring Security এর মূল বিষয়গুলো বুঝতে। নিচে "Hello Secure World" প্রজেক্ট তৈরি করার জন্য ধাপে ধাপে নির্দেশনা দেওয়া হলো।
প্রয়োজনীয় টুলস এবং সেটআপ:
- Spring Boot Starter: Spring Boot ব্যবহার করে প্রজেক্ট তৈরি।
- ডিপেনডেন্সি:
- Spring Security
- Spring Web
- Java Development Kit (JDK): ১১ বা এর উপরে।
- Maven বা Gradle: ডিপেনডেন্সি ম্যানেজমেন্টের জন্য।
Step 1: Maven প্রজেক্ট তৈরি করুন
Spring Initializer ব্যবহার করে একটি Spring Boot প্রজেক্ট তৈরি করুন।
Maven ডিপেনডেন্সি:
<dependencies>
<!-- Spring Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
Step 2: application.properties কনফিগার করুন
Spring Boot ডিফল্টভাবে /login এ একটি ফর্ম সরবরাহ করে। তবে আমরা এটি কাস্টমাইজ করবো।
server.port=8080
spring.security.user.name=admin
spring.security.user.password=admin123
- এখানে, ডিফল্ট ইউজারনেম এবং পাসওয়ার্ড
adminএবংadmin123সেট করা হলো।
Step 3: একটি REST Controller তৈরি করুন
Spring Security ব্যবহার করে "Hello Secure World" মেসেজ প্রদর্শনের জন্য একটি কন্ট্রোলার তৈরি করুন।
HelloController:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String helloWorld() {
return "Hello Secure World!";
}
}
Step 4: Spring Security কনফিগারেশন তৈরি করুন
Spring Security-তে কাস্টমাইজড সিকিউরিটি সেটআপ করার জন্য @EnableWebSecurity ব্যবহার করে একটি কনফিগারেশন ক্লাস তৈরি করুন।
SecurityConfig:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/hello").authenticated() // /hello রিকোয়েস্ট অনুমোদিত হতে হবে
.and()
.httpBasic(); // HTTP Basic Authentication সক্রিয়
}
}
Step 5: অ্যাপ্লিকেশন চালু করুন
mainমেথড ব্যবহার করে Spring Boot অ্যাপ্লিকেশন চালু করুন।
SpringSecurityDemoApplication:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringSecurityDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringSecurityDemoApplication.class, args);
}
}
Step 6: প্রজেক্ট টেস্ট করুন
- অ্যাপ্লিকেশন চালু করুন:
Maven কমান্ড ব্যবহার করুন:
mvn spring-boot:run
- ব্রাউজারে
/helloরিকোয়েস্ট পাঠান:- URL:
http://localhost:8080/hello - ব্রাউজার একটি লগইন ফর্ম দেখাবে।
- ইউজারনেম:
admin, পাসওয়ার্ড:admin123দিন।
- URL:
- রেসপন্স দেখুন:
- লগইন সফল হলে ব্রাউজারে "Hello Secure World!" মেসেজ দেখা যাবে।
Step 7: Spring Security টেস্ট করুন
1. Unauthorized Access:
/helloঅ্যাক্সেস করার আগে লগইন না করলে 401 Unauthorized রেসপন্স পাওয়া যাবে।
2. Authenticated Access:
- সঠিক ইউজারনেম এবং পাসওয়ার্ড দিয়ে লগইন করলে অ্যাক্সেস পাওয়া যাবে।
3. Custom Authentication:
- Spring Security-এর ডিফল্ট কনফিগারেশন পরিবর্তন করে বিভিন্ন URL-এ ভিন্ন রোল নির্ধারণ করতে পারেন।
কোডের প্রধান পয়েন্ট:
- Spring Security ডিফল্ট সুরক্ষা: Spring Boot স্বয়ংক্রিয়ভাবে
/loginএবং HTTP Basic Authentication সক্রিয় করে। - Custom Security Rules:
http.authorizeRequests()দিয়ে কাস্টম অ্যাক্সেস কন্ট্রোল সেট করা হয়।
- Authentication Mechanism:
- HTTP Basic Authentication ব্যবহার করে প্রাথমিক লগইন নিশ্চিত করা হয়।
উপসংহার:
এই "Hello Secure World" প্রজেক্টটি Spring Security এর মূল বিষয়গুলো অনুশীলন করার জন্য একটি চমৎকার সূচনা। Spring Security ব্যবহার করে অ্যাপ্লিকেশনের Authentication এবং Authorization সহজে বাস্তবায়ন করা যায়। ভবিষ্যতে, এই বেসিক প্রজেক্টটি JWT, OAuth2, এবং Role-Based Access Control (RBAC) এর মতো উন্নত সিকিউরিটি ফিচার যুক্ত করার জন্য একটি ভিত্তি হিসেবে কাজ করতে পারে।
Read more